#include <chrono> // C++ 标准库里和高精度计时有关的所有类型
#include <iostream>

using namespace std;
using namespace std::chrono;

class Timer {
public:
  // 构造函数：必需初始化类型的所有属性
  // 专门用于创建 Timer 的
  Timer() {
    // 打卡，起始时间
    start = high_resolution_clock::now();
    end = high_resolution_clock::now();

    cout<<"Timer 创建好了，开始计时"<<endl;
  }

  // 析构函数
  // 专门用于销毁 Timer 的
  ~Timer() {
    // 打卡，结束时间
    end = high_resolution_clock::now();

    auto diff = duration_cast<nanoseconds>(end - start);

    cout<<"Timer 被销毁了，停止计时。共执行："<<diff.count()<<" 纳秒。"<<endl;
    // 结束时间 - 起始时间
  }

private:
  // 起始时间点和结束时间点
  // 像是定义在 Timer 里面的变量
  // 我们管定义在 Timer 里面的变量，叫做 Timer 的属性
  time_point<high_resolution_clock> start;
  time_point<high_resolution_clock> end;
};


